A flip-flop is one of the basic sequential circuits in digital electronics. It has many important applications in memory registers, counters, dividers, sequencers and microprocessors. However, although all flip-flops are capable of storing a single binary bit of information, there are many varieties of flip-flops, which may be divided into four basic kinds: RS, JK, D and T.
A basic RS flip-flop or latch comprises a pair of NOR gates each having an input connected to the output of the other. This basic RS flip-flop may have additional logic elements and a clock input added to form a clocked RS flip-flop; and two clocked RS flip-flops may be combined to form a clocked, masterslave RS flip-flop. An RS flip-flop has the advantage of being the simplest flip-flop but has the disadvantage of having an undefined state with one of the four possible combinations of inputs. A JK flip-flop is basically a clocked RS flip-flop with several logical connections which define the undefined state of the RS flip-flop and allow all possible combinations of inputs. A D flip-flop is one with only one data input in which the output follows that data input with each clock pulse. A T flip-flop has a single toggle input; and, when the toggle input is supplied with a logic 1 the flip-flop changes state or toggles each time it receives a clock pulse.
It is well known that the different kinds of flip-flop are closely related and many can be formed from one or more of the others with specific external connections and/or additional logic elements. For example, a T flip-flop may be formed from a JK flip-flop by tying both inputs together; and a D flip-flop may be formed from an RS or JK flip-flop by tying one input to the other through an inverter. However, each of these transformations must be made individually by an actual physical connection and/or the addition of another logic element. It would appear to be advantageous to have a universal flip-flop which could be externally programmed by means of one or more logic signals to operate as any one of the four basic kinds of flip-flops. Such a universal, signal programmable flip-flop would be a versatile addition to the area of programmed digital electronics in that it would enable a computer or similar digital device to change its own internal circuitry in response to software instructions. In addition, a universal flip-flop may result in inventory or assembly savings in more conventional flip-flop use in digital electronic circuitry.